3.6.12.17 lsl,lsr,bsl,bsr-シフト命令
lsl命令は論理左シフト、lsr命令は算術右シフトまたは論理右シフト、bsl命令はバレル左シフト、bsr命令はバレル右シフトを計算する。 第 2 入力がシフト量となる。
論理シフトではシフトして空いたビットには 0 が埋められる。
算術右シフトではシフトして空いたビットは入力の符号ビットで埋められる。 バレルシフトではシフトアウトされたビットが回り込んで空いたビットを埋める。
シフト量が語長を超える場合の動作について述べる。
語長をn(精度指定に従って16, 32,または64)、元のシフト量をsと置く。 まずs 0 :=smod 2nとする。
つまり語長と等しいシフト量を表せるビット数より上のビットは無視される。
その後、s 0 < nならば上の定義どおりにシフトを行う。
n≤s 0 ならば、バレルシフトではs 0 −nだけシフトする。
算術シフトと論理シフトではnだけシフトする(すべてシフトアウトされるので、結果はall 0またはall 1になる)。